package com.cmc.cloud.cmclink.doc.mq;

import lombok.Data;

import java.util.List;

/**
 * @author zhy
 */
@Data
public class SiEdiReqVO {
    private String msgId;
    private String msg;
    /**
     * 9＝原始报文 5＝更改报文 3＝删除报文
     */
    private String funcCode;
    private Boolean needApproval;
    private Data data;

    @lombok.Data
    public static class Data {
        private String bookingNo;
        private String blNo;
        private String referenceNo;
        private String bkgVesselCode;
        private String bkgVoyage;
        private String routeId;
        private String currentPort;
        private String porCode;
        private String porDesc;
        private String polCode;
        private String polDesc;
        private String podCode;
        private String podDesc;
        private String delCode;
        private String delDesc;
        private String bkgCode;
        private String topAgentCode;
        private String agreementNo;
        private String shippingTerm;
        private String spaceOwner;
        private String cntrOwner;
        private String cntrStatus;
        private String blType;
        private String signOrder;
        private String signType;
        private String splitCombineType;
        private String siStatus;
        private String siNotifyEmails;
        private String issuePlace;
        private String issueDate;
        private String issueFeederBl;
        private String issueFeederPlace;
        private String blEntity;
        private String porOperateAgentCode;
        private String delOperateAgentCode;
        private String transitTermIm;
        private String approveStatus;
        private String podBlFlag;
        private String dataSource;
        private String houseBillNo;
        private String signOrderTime;

        private List<Vslvoy> vslvoyList;
        private List<Cargo> cargoList;
        private List<Scn> scnList;
        private List<Contact> contactList;
        private List<Payment> paymentList;
        private List<Cntr> cntrList;
    }


    @lombok.Data
    public static class Vslvoy {

        private String routeNo;
        private String laneCodeEx;
        private String laneCodeIm;
        private String vesselCode;
        private String vesselOperator;
        private String voyageEx;
        private String voyageIm;
        private String polCode;
        private String polTerminal;
        private String podCode;
        private String podTerminal;
        private String transmode;
        private String stuffLocEx;
        private String stuffLocIm;

    }

    @lombok.Data
    public static class Cargo {
        private String cargoType;
        private String hsCode;
        private String commodityEn;
        private String commodityCn;
        private String subCargoType;
        private String grossWeight;
        private String temperature;
        private String temperatureUnit;
        private String vantilation;
        private String unNo;
        private String imoClass;
        private String flashPoint;
        private String packingGroup;
        private String marks;
        private String quantity;
        private String measurement;
        private String packageCode;
        private String packageDesc;
        private String cargoSubType;
    }

    @lombok.Data
    public static class Scn {

        private String partyTypeCode;
        private String csmCode;
        private String uniqueIdentifierPre;
        private String uniqueIdentifierFix;
        private String companyName;
        private String companyAddress;
        private String countryCode;
        private String telephone;
        private String email;
        private String fax;
        private String city;
        private String province;
        private String cityCode;
        private String provinceCode;
        private String aeo;
        private String zipCode;

    }

    @lombok.Data
    public static class Payment {

        private String chargeCode;
        private String designatedPayment;
        private String designatedPayerCode;
        private String paymentPlace;
    }

    @lombok.Data
    public static class Contact {

        private String contactType;
        private String contactPerson;
        private String contactTelephone;
        private String contactEmail;
        private String contactAddress;
        private String contactFax;
    }

    @lombok.Data
    public static class Cntr {

        private String cntrNo;
        private String sealNo;
        private String cntrType;
        private String cntrSize;
        private String quantity;
        private String grossWeight;
        private String measurement;
        private String cntrTare;
        private String vgmWeight;
        private String vgmTypeCode;
        private String vgmAddress;
        private String vgmTime;
        private String vgmSignature;
        private String overForward;
        private String overAfter;
        private String overLeft;
        private String overRight;
        private String overHeight;
        private String lcl;
        private String carrier;
    }

}